package com.lancoo.cvas.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.lancoo.cvas.entity.PlanTeaching;
import com.lancoo.cvas.entity.Student;
import com.lancoo.cvas.pojo.response.Scheme;
import com.lancoo.cvas.pojo.vo.StudentGroupClass;

import java.util.List;

/**
 * 教务获取教学计划，相当于专业版本
 *
 * @author liufeng
 * @email 1037383243@qq.com
 * @date 2023-12-04 11:54:00
 */
public interface PlanTeachingService extends IService<PlanTeaching> {


    /**
     * 同步教务系统数据
     *
     * @param taskId
     * @param schemeList
     */
    void syncEducational(Integer taskId, List<Scheme> schemeList, String schoolId, String term);

    /**
     * 根据课程/环节id和修读性质获取教学计划学生
     *
     * @param flag
     * @param courseId
     * @param studyNature
     * @param campusId
     * @return
     */
    List<Student> getStudentNumByCourseAndNature(int flag, Long courseId, Integer studyNature, String campusId);

    /**
     * 获取一个课程的学生 分组
     *
     * @param flag
     * @param courseId
     * @param studyNature
     * @param campusId
     * @param isDisplaySelected
     * @return
     */
    List<StudentGroupClass> getStudentListByCourse(Integer flag, Long courseId, Integer studyNature, String campusId, boolean isDisplaySelected);

    /**
     * 获取一个课程辅修的学生
     *
     * @param courseId
     * @return
     */
    List<Student> getMinorStudentByCourseId(Long courseId);


    /**
     * 根据班级获取教学计划列表
     * @param taskId
     * @param classId
     * @return
     */
    List<PlanTeaching> getPlanTeachingByClass(Integer taskId, String classId);


    /**
     * 根据专业获取教学计划列表
     * @param taskId
     * @param gradeId
     * @param majorId
     * @return
     */
    List<PlanTeaching> getPlanTeachingByMajor(Integer taskId, String gradeId, Long majorId);


    /**
     * 同课程合班
     * @param taskId
     * @param teachingClassIds
     * @return
     */
    Boolean mixedClassByCourse(Integer taskId, List<Long> teachingClassIds);
}

